<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='UTF-8'>
     <meta name='viewport' content='width=device-width, initial-scale=1.0'>
     <title>私有作用域私有栈内存中的变量处理</title>
     <link rel='stylesheet' href='https://cdn.bootcdn.net/ajax/libs/highlight.js/11.7.0/styles/atom-one-dark.min.css'>
     <script src='//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js'></script>
    <style>code::-webkit-scrollbar {display: none;}</style>
</head>
<body>
     <pre>
        <code style='border-radius: 10px;'>
            
        </code>
     </pre>
     <script> hljs.highlightAll(); </script>
     <script>
        /* 私有作用域中的栈内存变量处理 */
        // 1.
        // console.log(a,b); // un ,un
        // var a = 12,
        //     b = 12
        // function fn(){
        //     console.log(a,b); // un , 12
        //     var a = b = 13
        //     console.log(a,b); // 13 13
        // }
        // fn()
        // console.log(a,b);    // 12 13


        // 2.
        // console.log(a,b,c); // un ,un ,un 
        // var a = 12,
        //     b = 13,
        //     c = 14
        // function fn(a){
        //     console.log(a,b,c); // 10 13 14
        //     a = 100
        //     c = 200
        //     console.log(a,b,c); // 100 13 200
        // }
        // b = fn(10)
        // console.log(a,b,c);    // 12 un 200

        // 3.(⊙o⊙)…
        // var ary = [12,23]
        // function fn(ary){
        //     debugger
        //     console.log(ary); // 12,23
        //     debugger
        //     ary[0] = 100 // 100 23
        //     debugger
        //     ary = [100] // [100]
        //     debugger
        //     ary[0] = 0 // [0]
        //     debugger
        //     console.log(ary); // [0] 
        // }
        // debugger
        // fn(ary)
        // console.log(ary); // 100,23

        // 4.
        var i = 20
        function fn(){
            i-=2
            return function (n){
                console.log((++i) - n);
            }
        }
        var f = fn()
        f(1) // un i = 18
        f(2) // un i = 16
        f()(3) // i = 14 15 - 3 12
        fn()(4) // 12 
        f(5) // un 10
        console.log('i',i);
     </script>
</body>
</html>